package io.github.talelin.latticy.bo.rule;

import io.github.talelin.latticy.dto.rule.chargeItem.ChargeAbsoluteDTO;
import io.github.talelin.latticy.dto.rule.chargeItem.ChargeConditionDTO;
import io.github.talelin.latticy.dto.rule.chargeItem.ChargeItemDTO;
import lombok.Data;
import org.springframework.beans.BeanUtils;

import java.math.BigDecimal;
import java.util.List;

/**
 * @authoer:wulongbo
 * @createDate:2022/8/24
 * @description:
 */
@Data
public class ChargeItemBO {

    private Integer userId;

    /**
     * 计费项名称
     */
    private String name;

    /**
     * 计费项类型（1：入库管理；2：出库管理；3：退货管理）
     */
    private Integer feesBizType;

    /**
     * 计费维度 （1：按整单来算；2：按每箱来算；3：按每种sku来算）
     */
    private Integer level;

    /**
     * 单据类型（[1,1]:[入库管理:所有的入库];[1,2]:[入库管理:入库&转运];[1,3]:[入库管理:仅入库];[1,4]:[入库管理:仅转运];
     * [2,1]:[出库管理:小包出库];[2,2]:[出库管理:大货出库]；
     * [3,1]:[退货管理:所有的退货];[3,2]:[退货管理:小包退货];[3,3]:[退货管理:FBA退货]）
     */
    private Integer billType;

    /**
     * 计费单位(重量) 1：kg ；2：lb/oz
     */
    private Integer weight;

    /**
     * 计费单位(体积) 1：CBM ；2：CBF
     */
    private Integer size;

    /**
     * 计费模式（1：及时核销，2：事后核销）
     */
    private Integer model;

    /**
     * 基础费用
     */
    private BigDecimal baseCost;

    /**
     * 描述
     */
    private String describe;

    private List<ChargeConditionDTO> ruleConditionKeyList;

    private List<ChargeAbsoluteDTO> chargeAbsoluteList;

    public ChargeItemBO(ChargeItemDTO dto, Integer userId) {
        BeanUtils.copyProperties(dto, this);
        this.userId = userId;
    }
}
